QTableView的表格项中加入图标的方法

您所在的位置:网站首页 mac 调整图标大小 QTableView的表格项中加入图标的方法

QTableView的表格项中加入图标的方法

2023-03-02 20:10| 来源: 网络整理| 查看: 265

当在使用表格视图的时候,需要在表格每一行前面加入图标,应该怎么做呢?Qt中通过使用MVC的处理方式,很容易做到这一点,具体实现如下:

先贴出图,让大家一睹为快

下面我就来介绍一下,上图的灯泡是怎么实现的,通过重载QAbstractTableModel中的data方法,如下:(CTblModel 派生自QAbstractTableModel)

[cpp] view plaincopyQVariant CTblModel::data(const QModelIndex &index, int role) const  {      if (!index.isValid())          return QVariant();            int col = index.column();      if (col == ledColIndex && role == Qt::DecorationRole)      {          return QIcon(":/images/light.png");      }      else      {          ...      }      return QVariant();  }  对于mvc的使用方法,请参考http://blog.csdn.net/rabinsong/article/details/8452946

让图片动起来,能够响应用户事件,当用户单击灯泡时,灯泡会点亮,这个怎么实现呢?

要实现这个功能,首先要能接受到鼠标事件,其次,要知道鼠标点击了灯泡部分,不能鼠标不在灯泡上点击,灯泡也亮。有了这两点,下面我们来看看实现:

我们可以通过重载QTableView的 mousePressEvent(),从而获得对鼠标单击的控制权,通过indexAt方找到当前单击的index,再根据索引找到灯泡所在的列,具体实现如下:

[cpp] view plaincopyvoid CTblView::mouseMoveEvent(QMouseEvent *event)  {      const QPoint &p = event->pos();      QModelIndex modelIndex = indexAt(p);      if (modelIndex.isValid())      {          int col = modelIndex.column();          int row = modelIndex.row();          if (col == ledColIndex)          {              pTblModel->setLight(row);          }      }  }  pTblModel就是上面定义的CTblModel,到了这里大家应该知道了基本实现思路了吧。

让图标变大一些,按照上面的做法,灯泡图标的大小很小,不管你的light.png图片多大,在表格中显示时的图标大小默认都很小,那么怎么改变图标的大小呢?方法也很简单,就是在CTblView构造函数中加入setIconSize(QSize(25,25));我设置的是25*25大小,显示效果如上图的灯泡效果,大家可以根据自己的应用,调整其大小。

0 0 QTableView的表格项中加入图标的方法 QTableView的表格项中加入图标的方法 QTableView的表格项中加入图标的方法 QTableView表格中出现多余的Checkbox QTableView表格中出现多余的Checkbox QTableView是显示表格状的视图 QTableView表格视图的列宽设置 QTableView表格视图的列宽设置 QTableView中嵌入CheckBox的四种方法 在QTableView中不使用委托插入checkbox的方法 qt中qtableview的使用 QT中Qtableview的使用方法 Qt中QTableView的使用 QTableView基本用法讲解,Qt表格控件的使用方法 QTableView基本用法讲解,Qt表格控件的使用方法 QT - QTableView表格视图的列宽设置 如何在网页的标题栏中加入icon图标 QTableView用鼠标选择行列的方法 Android 信息SMS的管理及拦截 方莹老师简介 HTTP协议的头信息详解 黑马程序员_图形化界面 Sql Server 数据分页 QTableView的表格项中加入图标的方法 Struts2配置文件传递Map jquery用法小结 Linux svn使用 Pomelo 新手入门(三) android 窗口小部件(例子) ssh报 HTTP Status 500 - Unable to instantiate Action, com.web.action.UserAction, defined for 'login' Altair收购EMSS公司 增强电磁求解器功能 지금의 人間은 자라는 過程에 있는 未成品 )(韓長庚 易學原理總論)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3